Line reflection
Leetcode #356 | Medium | Хэш-таблицы | Математика
Идея
Отражение относительно x=k, считаем сумму minX+maxX и заводим хэш-сет точек, если есть точка (sum-x,y) то отражение существует
Big-O
- Время
O(N) - Память
O(N)
Код
public class Solution {
public boolean isReflected(int[][] points) {
if (points.length <= 1) return true;
int minX = Integer.MAX_VALUE;
int maxX = Integer.MIN_VALUE;
Set<String> set = new HashSet<>();
for (int[] p : points) {
minX = Math.min(minX, p[0]);
maxX = Math.max(maxX, p[0]);
set.add(p[0] + "#" + p[1]);
}
int sum = minX + maxX;
for (int[] p : points) {
if (!set.contains((sum - p[0]) + "#" + p[1])) {
return false;
}
}
return true;
}
}